package com.dmz.workflow.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.echronos.commons.utils.FilePathDeSerializer;
import com.echronos.commons.utils.FilePathSerializer;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.*;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * FlowableForm 实体类
 */
@Data
@TableName("ech_workflow_form_info")
public class FlowableForm {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Integer id;

    /**
     * 语言 cn中文 en英文
     */
    private String lang;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 应用ID
     */
    private Integer appId;

    /**
     * 版本号
     */
    private Integer version;

    /**
     *  表单名称
     */
    @NotNull
    private String name;

    /**
     * 分组ID
     */
    private Integer groupId;

    /**
     * 关联资源表
     */
    private Integer permiId;

    /**
     * 模版图标
     */
    @JSONField(deserializeUsing = FilePathDeSerializer.class,serializeUsing = FilePathSerializer.class)
    private String icon;

    /**
     *  表单说明
     */
    private String approvalInstructions;

    /**
     *  审批人签名 0 非必签；1 必签
     */
    private Integer signature;

    /**
     * 审批意见填写提示
     */
    private String approvalAdvice;

    /**
     * 审批意见类型(必填、对发起人可见、允许代他人提交)
     */
    private String approvalAdviceType;

    /**
     * 审批人去重 0 不去重；1 连续去重；2 非连续去重
     */
    private Integer approvalRemoveRepetition;

    /**
     * 发起人审批自动通过
     */
    private Integer autoApproval;

    /**
     * 通知抄送人 0 仅发起时通知；1 仅全部同意后通知；2 发起和全部同意后均通知
     */
    private Integer noticeCcPerson;

    /**
     *  是否公有 0 私有；1 公有
     */
    private Integer isPublic;

    /**
     * 状态：1：停用 0：正常
     */
    private Integer status;

    /**
     * 是否已删除
     */
    private Integer isDeleted;

    /**
     *  创建人
     */
    private Integer createUser;


    /**
     *  创建时间
     */
    private LocalDateTime createTime;
    /**
     *  修改人
     */
    private Integer updateUser;
    /**
     *  修改时间
     */
    private LocalDateTime updateTime;

    /**
     *  工作流程定义ID
     */
    private String processDefinitionId;

    /**
     *  表单控件，json数据
     */
    private String formJson;


    /**
     *  是否为套件；0:否 1:是
     */
    private Integer isSuit;

    /**
     *  表单key 其实就是表单(表的)id 必填
     */
    @TableId
    @NotNull
    private String formKey;
}
